import java.util.*;

public class Leet1765 implements Cloneable {
    public static void main(String[] args) {
        int[][] is = {{0,0},{1,1},{1,0}};
        Leet1765 l = new Leet1765();
        System.out.println(Arrays.deepToString(l.highestPeak(is)));
    }
    public int[][] highestPeak(int[][] isWater) {

        List<int[][]> list = new ArrayList<>();
        for (int i = 0; i < isWater.length; i++) {
            for (int j = 0; j < isWater[0].length; j++) {
                if (isWater[i][j]==1){
                    Queue<Module1> queue = new LinkedList<>();
                    queue.add(new Module1(j,i,0));
                    int[][] t = new int[isWater.length][isWater[0].length];
                    for (int ii = 0; ii < isWater.length; ii++) {
                        for (int jj = 0; jj < isWater[0].length; jj++) {
                            t[ii][jj] = 0;
                            if (isWater[ii][jj]==1)
                                t[ii][jj] = -1;
                        }
                    }
                    while (!queue.isEmpty()){
                        int x = queue.peek().x;
                        int y = queue.peek().y;
                        int num = queue.peek().num;
                        if (x>0&&(t[y][x-1]==0||t[y][x-1]==-1)){
                            t[y][x-1] = num+1;
                            queue.add(new Module1(x-1,y,num+1));
                        }
                        if (x<isWater[0].length-1&&(t[y][x+1]==0||t[y][x+1]==-1)){
                            t[y][x+1] = num+1;
                            queue.add(new Module1(x+1,y,num+1));
                        }
                        if (y>0&&(t[y-1][x]==0||t[y-1][x]==-1)){
                            t[y-1][x] = num+1;
                            queue.add(new Module1(x,y-1,num+1));
                        }
                        if (y<isWater.length-1&&(t[y+1][x]==0||t[y+1][x]==-1)){
                            t[y+1][x] = num+1;
                            queue.add(new Module1(x,y+1,num+1));
                        }
                        queue.remove();

                    }
                    list.add(t);
                }
            }
        }
        int[][] re = list.get(0).clone();
        for(int[][] a:list){
            for (int ii = 0; ii < isWater.length; ii++) {
                for (int jj = 0; jj < isWater[0].length; jj++) {
                    if (a[ii][jj]!=-1)
                        re[ii][jj] = Math.min(a[ii][jj],re[ii][jj]);
                }
            }
        }
        for (int ii = 0; ii < isWater.length; ii++) {
            for (int jj = 0; jj < isWater[0].length; jj++) {
                if (isWater[ii][jj]==1)
                    re[ii][jj] = 0;
            }
        }
        return re;
    }
}
//    public int[][] highestPeak(int[][] isWater) {
//
//        List<List<int[]>> list = new ArrayList<>();
//        List<int[]> l = new ArrayList<>();
//        for (int ii = 0; ii < isWater.length; ii++) {
//            int[] a = new int[isWater[0].length];
//            for (int jj = 0; jj < isWater[0].length; jj++) {
//                a[jj] = 0;
//                if (isWater[ii][jj]==1)
//                    a[jj] = -1;
//            }
//            l.add(a);
//        }
//
//        for (int i = 0; i < isWater.length; i++) {
//            for (int j = 0; j < isWater[0].length; j++) {
//                if (isWater[i][j]==1){
//                    Queue<Module1> queue = new LinkedList<>();
//                    queue.add(new Module1(j,i,0));
////                    int[][] t = new int[isWater.length][isWater[0].length];
//                    List<int[]> t = new ArrayList<>(l);
//                    while (!queue.isEmpty()){
//                        int x = queue.peek().x;
//                        int y = queue.peek().y;
//                        int num = queue.peek().num;
//                        if (x>0&&(t.get(y)[x-1]==0||t.get(y)[x-1]==-1)){
//                            t.get(y)[x-1] = num+1;
//                            queue.add(new Module1(x-1,y,num+1));
//                        }
//                        if (x<isWater[0].length-1&&(t.get(y)[x+1]==0||t.get(y)[x+1]==-1)){
//                            t.get(y)[x+1] = num+1;
//                            queue.add(new Module1(x+1,y,num+1));
//                        }
//                        if (y>0&&(t.get(y-1)[x]==0||t.get(y-1)[x]==-1)){
//                            t.get(y-1)[x] = num+1;
//                            queue.add(new Module1(x,y-1,num+1));
//                        }
//                        if (y<isWater.length-1&&(t.get(y+1)[x]==0||t.get(y+1)[x]==-1)){
//                            t.get(y+1)[x] = num+1;
//                            queue.add(new Module1(x,y+1,num+1));
//                        }
//                        queue.remove();
//
//                    }
//                    list.add(t);
//                }
//            }
//            }
////        int[][] re = list.get(0).clone();
//        List<int[]> re = new ArrayList<>(list.get(0));
//        for(List<int[]> a:list){
//            for (int ii = 0; ii < isWater.length; ii++) {
//                for (int jj = 0; jj < isWater[0].length; jj++) {
//                    if (a.get(ii)[jj]!=-1)
//                        re.get(ii)[jj] = Math.min(a.get(ii)[jj],re.get(ii)[jj]);
//                }
//            }
//        }
//        for (int ii = 0; ii < isWater.length; ii++) {
//            for (int jj = 0; jj < isWater[0].length; jj++) {
//                if (isWater[ii][jj]==1)
//                    re.get(ii)[jj] = 0;
//            }
//        }
//        int[][] r = new int[isWater.length][isWater[0].length];;
//        for (int ii = 0; ii < isWater.length; ii++) {
//            for (int jj = 0; jj < isWater[0].length; jj++) {
//                r[ii][jj] = re.get(ii)[jj];
//            }
//        }
//        return r;
//        }
//    }

class Module1{
    int x,y,num;

    public Module1(int x, int y, int num) {
        this.x = x;
        this.y = y;
        this.num = num;
    }
}
//import java.util.*;
//
//public class Leet1765 {
//    public static void main(String[] args) {
//        int[][] is = {{0,0,1},{1,0,0},{0,0,0}};
//        Leet1765 l = new Leet1765();
//        l.highestPeak(is);
//    }
//    public void highestPeak(int[][] isWater) {
//        int[][] temp = new int[isWater.length][isWater[0].length];
//
//        List<int[][]> list = new ArrayList<>();
//
//        for (int ii = 0; ii < isWater.length; ii++) {
//            for (int jj = 0; jj < isWater[0].length; jj++) {
//                temp[ii][jj] = 0;
//                if (isWater[ii][jj]==1)
//                    temp[ii][jj] = -1;
//            }
//        }
//
//        for (int i = 0; i < isWater.length; i++) {
//            for (int j = 0; j < isWater[0].length; j++) {
//                if (isWater[i][j]==1){
//                    Queue<Module1> queue = new LinkedList<>();
//                    queue.add(new Module1(j,i,0));
//                    int[][] t = temp.clone();
//                    while (!queue.isEmpty()){
//                        int x = queue.peek().x;
//                        int y = queue.peek().y;
//                        int num = queue.peek().num;
//                        if (x>0&&t[y][x-1]==0){
//                            t[y][x-1] = num+1;
//                            queue.add(new Module1(x-1,y,num+1));
//                        }
//                        if (x<isWater[0].length-1&&t[y][x+1]==0){
//                            t[y][x+1] = num+1;
//                            queue.add(new Module1(x+1,y,num+1));
//                        }
//                        if (y>0&&t[y-1][x]==0){
//                            t[y-1][x] = num+1;
//                            queue.add(new Module1(x,y-1,num+1));
//                        }
//                        if (y<isWater.length-1&&t[y+1][x]==0){
//                            t[y+1][x] = num+1;
//                            queue.add(new Module1(x,y+1,num+1));
//                        }
//                        queue.remove();
//                        System.out.println(Arrays.deepToString(t));
//
//                    }
//                    System.out.println(11111111);
//                }
//            }
//        }
//    }
//}
//class Module1{
//    int x,y,num;
//
//    public Module1(int x, int y, int num) {
//        this.x = x;
//        this.y = y;
//        this.num = num;
//    }
//}
